home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 June: Reference Library / Dev.CD Jun 96 RL / Dev.CD Jun 96 RL.toast / What's New? / Tool Chest / Text / WASTE 1.2a6 / WASTE Demo ƒ / WEDemoInit.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-22  |  3.7 KB  |  182 lines  |  [TEXT/CWIE]

  1. /*
  2.     WASTE Demo Project:
  3.     Initialization and Finalization Routines
  4.  
  5.     Copyright © 1993-1996 Marco Piovanelli
  6.     All Rights Reserved
  7.  
  8.     C port by John C. Daub
  9. */
  10.  
  11.  
  12. #ifndef __DIALOGS__
  13. #include <Dialogs.h>
  14. #endif
  15.  
  16. #ifndef __FONTS__
  17. #include <Fonts.h>
  18. #endif
  19.  
  20. #ifndef __GESTALT__
  21. #include <Gestalt.h>
  22. #endif
  23.  
  24. #ifndef __SCRAP__
  25. #include <Scrap.h>
  26. #endif
  27.  
  28. #ifndef __TEXTSERVICES__
  29. #include <TextServices.h>
  30. #endif
  31.  
  32. #ifndef __WEDEMOAPP__
  33. #include "WEDemoIntf.h"
  34. #endif
  35.  
  36. #include "WEObjectHandlers.h"
  37.  
  38.  
  39. OSErr Initialize( void )
  40. {
  41.     long            response;
  42.     short            i;
  43.     OSErr            err;
  44.  
  45.     // expand the zone to its maximum size
  46.  
  47.     MaxApplZone( );
  48.  
  49.     // allocate some extra master pointer blocks
  50.  
  51.     for ( i = 0; i < 6; i++ )
  52.     {
  53.         MoreMasters( );
  54.     }
  55.  
  56.     // initialize the Toolbox
  57.  
  58.     InitGraf( &qd.thePort );
  59.     InitFonts( );
  60.     InitWindows( );
  61.     InitMenus( );
  62.     TEInit( );    // tho we use WASTE for text stuff, dialogs, etc all use TextEdit so don't remove this!
  63.     InitDialogs( nil );
  64.     InitCursor( );
  65.     FlushEvents( everyEvent, 0 );
  66.  
  67.     // if desk scrap is too large, unload it
  68.  
  69.     if ( InfoScrap( )->scrapSize > kScrapThreshold )
  70.     {
  71.         UnloadScrap( );
  72.     }
  73.  
  74.     // make sure system software versino is 7.0 or newer (classic 68K only)
  75.  
  76.     #if !GENERATINGCFM
  77.     if ( ( Gestalt( gestaltSystemVersion, &response ) != noErr ) || ( response < kMinSystemVersion ) )
  78.     {
  79.         SetCursor( &qd.arrow );
  80.         response = Alert( kAlertNeedSys7, nil );
  81.         return -1;
  82.     }
  83.     #endif
  84.  
  85.     // determine whether color Quickdraw is available
  86.  
  87.     gHasColorQD = (Gestalt(gestaltQuickdrawVersion, &response) == noErr)
  88.                     && (response >= gestalt8BitQD);
  89.  
  90.     // determine whether the Drag Manager is available
  91.  
  92.     gHasDragAndDrop = (Gestalt( gestaltDragMgrAttr, &response ) == noErr )
  93.                     && BTST( response, gestaltDragMgrPresent );
  94.  
  95. #if GENERATINGCFM
  96.     // additional check needed if DragLib is weak-linked
  97.     gHasDragAndDrop = gHasDragAndDrop && (&NewDrag != nil);
  98. #endif
  99.  
  100.     // determine whether the Text Services Manager is available
  101.  
  102.     gHasTextServices = ( Gestalt( gestaltTSMgrVersion, &response ) == noErr );
  103.  
  104.     // register this application with the TSM
  105.  
  106.     if ( gHasTextServices )
  107.     {
  108.         if ( ( err = InitTSMAwareApplication( ) ) != noErr )
  109.             goto cleanup;
  110.     }
  111.  
  112.     // install default drag handlers
  113.  
  114.     if ( gHasDragAndDrop )
  115.     {
  116.         if ( ( err = InstallDragHandlers( ) ) != noErr )
  117.             goto cleanup;
  118.     }
  119.  
  120.     // install the sample object handlers for pictures and sounds
  121.  
  122.     if ((err = WEInstallObjectHandler(kTypePicture, weNewHandler,
  123.                 (UniversalProcPtr) NewWENewObjectProc(HandleNewPicture), nil)) != noErr)
  124.         goto cleanup;
  125.  
  126.     if ((err = WEInstallObjectHandler(kTypePicture, weDisposeHandler,
  127.                 (UniversalProcPtr) NewWEDisposeObjectProc(HandleDisposePicture), nil)) != noErr)
  128.         goto cleanup;
  129.  
  130.     if ((err = WEInstallObjectHandler(kTypePicture, weDrawHandler,
  131.                 (UniversalProcPtr) NewWEDrawObjectProc(HandleDrawPicture), nil)) != noErr)
  132.         goto cleanup;
  133.  
  134.     if ((err = WEInstallObjectHandler(kTypeSound, weNewHandler,
  135.                 (UniversalProcPtr) NewWENewObjectProc(HandleNewSound), nil)) != noErr)
  136.         goto cleanup;
  137.  
  138.     if ((err = WEInstallObjectHandler(kTypeSound, weDrawHandler,
  139.                 (UniversalProcPtr) NewWEDrawObjectProc(HandleDrawSound), nil)) != noErr)
  140.         goto cleanup;
  141.  
  142.     if ((err = WEInstallObjectHandler(kTypeSound, weClickHandler,
  143.                 (UniversalProcPtr) NewWEClickObjectProc(HandleClickSound), nil)) != noErr)
  144.         goto cleanup;
  145.  
  146.     // perform other initialization chores
  147.  
  148.     if ( ( err = InitializeEvents( ) ) != noErr )
  149.         goto cleanup;
  150.  
  151.     if ( ( err = InitializeMenus( ) ) != noErr )
  152.         goto cleanup;
  153.  
  154.     // clear result code
  155.     err = noErr;
  156.  
  157. cleanup:
  158.     if ( err != noErr )
  159.     {
  160.         ErrorAlert( err );
  161.     }
  162.  
  163.     return err;
  164. }
  165.  
  166. void Finalize( void )
  167. {
  168.     // remove drag handlers
  169.  
  170.     if ( gHasDragAndDrop )
  171.     {
  172.         RemoveDragHandlers( );
  173.     }
  174.  
  175.     // notify text services that we're closing down
  176.  
  177.     if ( gHasTextServices )
  178.     {
  179.         CloseTSMAwareApplication( );
  180.     }
  181. }
  182.